﻿@model FlyingCircusWebIS.ViewModels.VooVM.VooCadastrarVM

@section css{
    @Styles.Render("~/Content/css/formulario")
}
<div id="outraspg">
    @{
        if (Model.Edicao)
        {
            ViewBag.Title = "Editar Voo";
        <h1>Edite os dados do voo</h1>
        }
        else
        {
            ViewBag.Title = "Cadastrar Voo";
        <h1>Informe os dados do voo</h1>    
        }
    
        <style>
            .habilitado {
                display: block;
            }

            .desabilitado {
                display: none;
            }
        </style>
    }
    @using (Html.BeginForm("Cadastrar", "Voo", FormMethod.Post, new { id = "cadastrar" }))
    { 
        @Html.ValidationSummary(true)
    
        /*@Html.LabelFor(M => M.NomeVoo)*/
        @Html.HiddenFor(M => M.NomeVoo)
    
        @Html.HiddenFor(m => m.IdPessoaUsuario)
        @Html.HiddenFor(m => m.IdVoo, new { id = "idVoo" });
        @Html.HiddenFor(m => m.Edicao, new { id = "edicao" })
        
        <h1>Partida</h1>
        <div class="conteudodivs">
            <dl>
                <dd class="classdd">
                    @Html.LabelFor(m => m.UFPartida)
                    @Html.DropDownListFor(m => m.UFPartida, Model.ItensUFPartida, new { id = "dropUFPartida" })<br />
                    @Html.ValidationMessageFor(m => m.UFPartida)
                </dd>
                <dd>
                    @Html.LabelFor(m => m.CidadePartida)
                    @Html.DropDownListFor(m => m.CidadePartida, Model.ItensCidadePartida, new { id = "dropCidadePartida" })<br />
                    @Html.ValidationMessageFor(m => m.CidadePartida)
                </dd>
                <dd class="classdd">
                    @Html.LabelFor(m => m.AeroportoPartida)
                    @Html.DropDownListFor(m => m.AeroportoPartida, Model.ItensAeroportoPartida, new { id = "dropAeroportoPartida" })<br />
                    @Html.ValidationMessageFor(m => m.AeroportoPartida)
                </dd>
                <dd class="classdd">
                    @Html.LabelFor(m => m.DataPartida)
                    @Html.TextBoxFor(m => m.DataPartida, new { id = "txDataPartida", @class = "datetimepicker-pt-br" })<br />
                    @Html.ValidationMessageFor(m => m.DataPartida)
                </dd>
            </dl>
        </div>
        <h1>Chegada</h1>
        
        <div class="conteudodivs">
            <dl>
                <dd class="classdd">
                    @Html.LabelFor(m => m.UFChegada)
                    @Html.DropDownListFor(m => m.UFChegada, Model.ItensUFChegada, new { id = "dropUFChegada" })<br />
                    @Html.ValidationMessageFor(m => m.UFChegada)
                </dd>
                <dd>
                    @Html.LabelFor(m => m.CidadeChegada)
                    @Html.DropDownListFor(m => m.CidadeChegada, Model.ItensCidadeChegada, new { id = "dropCidadeChegada" })<br />
                    @Html.ValidationMessageFor(m => m.CidadeChegada)
                </dd>
                <dd class="classdd">
                    @Html.LabelFor(m => m.AeroportoChegada)
                    @Html.DropDownListFor(m => m.AeroportoChegada, Model.ItensAeroportoChegada, new { id = "dropAeroportoChegada" })<br />
                    @Html.ValidationMessageFor(m => m.AeroportoChegada)
                </dd>
                <dd class="classdd">
                    @Html.LabelFor(m => m.DataChegada)
                    @Html.TextBoxFor(m => m.DataChegada, new { id = "txDataChegada", @class = "datetimepicker-pt-br" })<br />
                    @Html.ValidationMessageFor(m => m.DataChegada)
                </dd>
            </dl>
        </div>
        <h1>Voo</h1>
    
        <div class="conteudodivs">
            <dl>
                <!--<input type="button" name="listar" value="Listar aeronaves" id="listarAeronaves" /> -->
                <dd class="classdd">
                    @Html.LabelFor(m => m.IdAeronave)
                    @Html.DropDownListFor(m => m.IdAeronave, Model.ItensAeronaves, new { id = "listAeronaves" })
                    @Html.ValidationMessageFor(m => m.IdAeronave)
                </dd>
                <dd class="classdd">
                    @Html.LabelFor(m => m.AssentosComercializaveis)
                    @Html.TextBoxFor(m => m.AssentosComercializaveis, new { id = "assentosComercializaveis" })
                    @Html.ValidationMessageFor(m => m.AssentosComercializaveis)
                </dd>
            </dl>
            <dl>
                <dd class="classdd">
                    @Html.LabelFor(m => m.Preco)
                    @Html.TextBoxFor(m => m.Preco, new { id = "preco" })
                    @Html.ValidationMessageFor(m => m.Preco)
                </dd>
                <dd class="classdd">
                    @Html.LabelFor(m => m.Lucro)
                    @Html.TextBoxFor(m => m.Lucro, new { id = "lucro" })
                    @Html.ValidationMessageFor(m => m.Lucro)
                </dd>
            </dl>
            <dl>
                <dd>
                    <br />
                    @Html.CheckBoxFor(m => m.VooPromocional, new { id = "promocao" })
                    @Html.LabelFor(m => m.VooPromocional, new { @style = "display:inline; margin-left:2px" })
                </dd>
                <dd>
                    @Html.LabelFor(m => m.DescontoPromocao, new { id = "ldesconto", @class = "desabilitado" })
                    @Html.TextBoxFor(m => m.DescontoPromocao, new { id = "tdesconto", @class = "desabilitado" })
                </dd>

            </dl>
        </div>
        
        <div class="espacodasinfos">
            <input class="enviar" type="submit" value="Salvar" />
        </div>         

    }

    <div class="voltar">
        @Html.ActionLink("Voltar", "Index")
    </div>

</div>
@section scripts 
{
    <script type="text/javascript">
        //função que valida uma dateTime
        function isDate(dataHora) {
            var dataValida = true;
            
            try{
                var arrayDataHora = dataHora.split(" ");
                var arrayDiaMesAno = arrayDataHora[0].split("/");
                var arrayHoraMinuto = arrayDataHora[1].split(":");

                if (parseInt(arrayDiaMesAno[0]) <= 0 || parseInt(arrayDiaMesAno[0]) > 31) {
                    dataValida = false;
                }
                if (parseInt(arrayDiaMesAno[1]) <= 0 || parseInt(arrayDiaMesAno[1]) > 12) {
                    dataValida = false;
                }
                if (parseInt(arrayDiaMesAno[2]) <= 1900 || parseInt(arrayDiaMesAno[2]) > 3000) {
                    dataValida = false;
                }
                if (parseInt(arrayHoraMinuto[0]) < 0 || parseInt(arrayHoraMinuto[0]) > 24) {
                    dataValida = false;
                }
                if (parseInt(arrayHoraMinuto[1]) < 0 || parseInt(arrayHoraMinuto[1]) > 59) {
                    dataValida = false;
                }
            }
            catch(err){
                dataValida = false;
            }
            return dataValida;
        }

        $(document).ready(function () {
            $(".gerenciar").toggleClass("current");

            // Realiza as configurações
            ConfiguraEventoSelecaoComboEstados();
            ConfiguraMascaras();
            ConfiguraSelecaoComboCidades();
            ConfiguraCheckBox();
            ConfiguraData();

            
            if (isDate($("#txDataPartida").val())  && isDate($("#txDataChegada").val())) {
                ConfiguraSelecaoAeronavesDisponiveis();
            }

            $("#listarAeronaves").click(function () {
                ConfiguraSelecaoAeronavesDisponiveis();
            });

            $("#promocao").change(function () {
                ConfiguraCheckBox();
            });

            //Configuração do plugin dateTimePicker
            jQuery(".datetimepicker-pt-br").datetimepicker({
                lang: 'pt',
                format: 'd/m/Y H:i',
                minDate: 0,
                step: 15
            });
        });

        function ConfiguraData() {

            if (isDate($("#txDataPartida").val())) {
                $("#txDataChegada").datetimepicker({
                    startDate: $("#txDataPartida").val()
                });
            }

            $("#txDataPartida").change(function () {
                if (isDate($("#txDataPartida").val()) && isDate($("#txDataChegada").val())) {
                    $(this).datetimepicker({
                        onChangeDateTime: function (dp, $input) {
                            if (isDate($("#txDataPartida").val()) && isDate($("#txDataChegada").val())) {
                                ConfiguraSelecaoAeronavesDisponiveis();
                            }
                        }
                    });
                    $("#txDataChegada").datetimepicker({
                        startDate: $("#txDataPartida").val()
                    });
                }

            });

            $("#txDataChegada").change(function () {
                if (isDate($("#txDataPartida").val()) && isDate($("#txDataChegada").val())) {
                    $(this).datetimepicker({
                        onChangeDateTime: function (dp, $input) {
                            if (isDate($("#txDataPartida").val()) && isDate($("#txDataChegada").val())) {
                                ConfiguraSelecaoAeronavesDisponiveis();
                            }
                        }
                    });
                }
            });
        }


        function ConfiguraCheckBox() {

            if ($("#promocao").is(':checked')) {
                $("#ldesconto").removeClass('desabilitado').addClass('habilitado');
                $("#tdesconto").removeClass('desabilitado').addClass('habilitado');
                $("#promocao").change(function () {
                    $("#tdesconto").focus();
                });
            }
            else {
                $("#ldesconto").removeClass('habilitado').addClass('desabilitado');
                $("#tdesconto").removeClass('habilitado').addClass('desabilitado');
                $("#tdesconto").val("");
            }

        }
        function ConfiguraMascaras() {
            $("#tdesconto").mask("##0,99", { reverse: true });
            $("#lucro").mask("##0,99", { reverse: true });
            $("#preco").mask("00.000.000,99", { reverse: true });
            $("#assentosComercializaveis").mask("9990")
        }
        function ConfiguraEventoSelecaoComboEstados() {
            $("#dropUFPartida").change(function () {
                var uf = $(this).val();
                var condicao = this.id.split("UF");
                BuscarCidades(uf, condicao[1]);
            });
            $("#dropUFChegada").change(function () {
                var uf = $(this).val();
                var condicao = this.id.split("UF");
                BuscarCidades(uf, condicao[1]);
            });

            function BuscarCidades(uf, condicao) {
                var ufSelecionado = uf;
                $.get('@Url.Action("BuscarItensCidades")', { uf: ufSelecionado }, function (data) {
                    PopulaComboCidades(data, condicao);
                });
            }

            function PopulaComboCidades(data, condicao) {
                var dropdownCidades = $("#dropCidade" + condicao);

                dropdownCidades.empty();
                for (var i = 0; i < data.length; i++) {
                    var option = $("<option />").val(data[i].Value).text(data[i].Text);
                    dropdownCidades.append(option);
                }
            }
        }

        function ConfiguraSelecaoComboCidades() {
            $("#dropCidadePartida").change(function () {
                var idCidade = $(this).val();
                var condicao = this.id.split("Cidade");
                BuscarAeroportos(idCidade, condicao[1]);
            });

            $("#dropCidadeChegada").change(function () {
                var idCidade = $(this).val();
                var condicao = this.id.split("Cidade");
                BuscarAeroportos(idCidade, condicao[1]);

            });


            function BuscarAeroportos(idCidade, condicao) {
                $.get('@Url.Action("BuscarItensAeroportosPorCidade")', { id: idCidade }, function (data) {
                    PopulaComboAeroportos(data, condicao)
                });
            }


            function PopulaComboAeroportos(data, condicao) {
                var dropdownAeroporto = $("#dropAeroporto" + condicao);

                dropdownAeroporto.empty();
                for (var i = 0; i < data.length; i++) {
                    var option = $("<option />").val(data[i].Value).text(data[i].Text);
                    dropdownAeroporto.append(option);
                }
            }
            }

            function ConfiguraSelecaoAeronavesDisponiveis() {
                var partida = $("#txDataPartida").val();
                var chegada = $("#txDataChegada").val();

                BuscaAeronaves(partida, chegada);
            }

            function BuscaAeronaves(Partida, Chegada) {
                $.get('@Url.Action("BuscarItensAeronavesPorDatas")', { dataPartida: Partida, dataChegada: Chegada, idVoo: $("#idVoo").val(), edicao: $("#edicao").val() }, function (data) {
                PopulaComboAeronaves(Partida, Chegada, data)
            });
        }

        function PopulaComboAeronaves(dataPartida, dataChegada, data) {
            var listboxAeronave = $("#listAeronaves");

            listboxAeronave.empty();
            for (var i = 0; i < data.length; i++) {
                var option = $("<option />").val(data[i].Value).text(data[i].Text);
                listboxAeronave.append(option);
            }
        }
    </script>   
}